function Classe(){       

    var dados = new DadosObjeto();

    this.getObjetoDados = getObjetoDados;
    this.setDados = setDados;
    this.getDados = getDados;
    this.getString = getString;
    this.getInt = getInt;
    this.getDouble = getDouble;
    this.getDate = getDate;
    this.getTime = getTime;
    this.getBoolean = getBoolean;
    this.getPersistente = getPersistente;

    this.setString = setString;
    this.setInt = setInt;
    this.setDouble = setDouble;
    this.setDate = setDate;
    this.setTime = setTime;
    this.setBoolean = setBoolean;
    this.setPersistente = setPersistente;

    this.invocarMetodo = invocarMetodo;
    this.invocarVoid = invocarVoid;

    function getDados(){
        return dados.getDados();
    }

    function getObjetoDados(){
        return dados;
    }
    function setDados(nomeClasse,id){
        getObjetoDados().xmlhttpPost(nomeClasse,id);
    }
    function invocarMetodo(nomeComando){
        alert("Dentro da classe");
    }
    function invocarVoid(comando,nomeClasse){
        dados.invocarVoid(comando,nomeClasse);
    }

    function getString(nomePropriedade){
        try{
            var valor = eval("getDados()."+nomePropriedade);
            valor =  html_entity_decode(valor);
            valor = replaceAll(valor,"@quebraLinha@","\n");
            return valor;
        }catch(e){
            var valor = eval("getDados()."+nomePropriedade);
            valor = replaceAll(valor,"@quebraLinha@","\n");
            return valor;
        }
    }
    function html_entity_decode(str) {
        try {
            var tarea=document.createElement('textarea');
            tarea.innerHTML = str;
            return tarea.value;
            tarea.parentNode.removeChild(tarea);
        } catch(e) {
            //for IE add <div id="htmlconverter" style="display:none;"></div> to the page
            document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
            var content = document.getElementById("innerConverter").value;
            document.getElementById("htmlconverter").innerHTML = "";
            return content;
        }
    }
    function setString(nomePropriedade,valor){
        valor = convertToEntities(valor);
        valor = escape(valor);
        valor = replaceAll(valor,"%0D","@quebraLinha@");
        valor = replaceAll(valor,"%0A","@quebraLinha@");
        valor = replaceAll(valor,"@quebraLinha@@quebraLinha@","@quebraLinha@");        
        valor = unescape(valor);
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }
    function trim(str){return str.replace(/^\s+|\s+$/g,"");}

    function replaceAll(str, de, para){
        var pos = str.indexOf(de);
        while (pos > -1){
            str = str.replace(de, para);
            pos = str.indexOf(de);
        }
        return (str);
    }

    /*
    convertToEntities()
    This is to convert Chinese characters to Unicode numbers
    */

    function convertToEntities(tstr) {
        var bstr = '';
        for(var  i=0; i<tstr.length; i++) {
            if(tstr.charCodeAt(i)>127) {
                bstr += '&#' + tstr.charCodeAt(i) + ';';
            }
            else {
                bstr += tstr.charAt(i);
            }
        }
        return bstr;
    }
    
    function getInt(nomePropriedade){
        return eval("getDados()."+nomePropriedade);
    }

    function setInt(nomePropriedade,valor){
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }
    function getDouble(nomePropriedade){
        return eval("getDados()."+nomePropriedade);
    }

    function setDouble(nomePropriedade,valor){
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }
    function getDate(nomePropriedade){
        return eval("getDados()."+nomePropriedade);
    }
    function setDate(nomePropriedade,valor){
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }
    function getTime(nomePropriedade){
        return eval("getDados()."+nomePropriedade);
    }
    function setTime(nomePropriedade,valor){
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }
    function getBoolean(nomePropriedade){
        return eval("getDados()."+nomePropriedade);
    }
    function setBoolean(nomePropriedade,valor){
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }
    function getPersistente(nomePropriedade){
        return eval("getDados()."+nomePropriedade);
    }
    function setPersistente(nomePropriedade,valor){
        eval("getDados()."+nomePropriedade+"='"+valor+"';");
    }

}